package br.ufrn.dimap.ase.squid.metrics.explorer;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class ExploradorUtil {
	/**
	 * Pasta onde deve ser procurado os arquivos
	 */
	protected static String SOURCE_FOLDER = "src";
	/**
	 * extensao dos arquivos que devem ser usados
	 */
	protected static String SUFIXO_ARQUIVO = ".java";
	
	/**
	 * Recebe uma lista e retorna uma string com os conteudos da lista
	 * 	separado pelo 'separador'
	 * 
	 * @param strings
	 * @param separador
	 * @return
	 */
	public String listToString(List<String> strings, String separador) {
		String resposta = "";
		
		for (int i = 0; i < strings.size(); i++) {
			if(i > 0) resposta += separador;
			
			resposta += strings.get(i);
		}
		
		return resposta;
	}
	
	/**
	 * Transforma um array normal em um objeto List
	 * 
	 * @param array
	 * @return
	 */
	public List<Object> arrayToList(Object[] array) {
		List<Object> list = Arrays.asList(array);
		
		list = new ArrayList<Object>(list);
		if(list.size() > 1)
			list.remove(list.size()-1);
		
		return list;
	}
	
	/**
	 * Retonar um File caso exista
	 * 	Se nao existir, retorna null;
	 * 
	 * @param path
	 * @param name
	 * @return
	 */
	public File getFile(String path, String name) {
		String p = "/" + path + name;
		File file = new File(p);
		
		if(file.exists())
			return file;
		
		return null;
				
	}
	
	/**
	 * Retorna o path do arquivo
	 * 
	 * @param file
	 * @return
	 */
	public String getPathFile(File file) {
		String path = file.getPath().replace(file.getName(), "");

		return path;
	}
	
	/**
	 * Imprime de forma organizada os mapeamentos
	 * 
	 * @param mapping
	 */
	public void mostrarMapping(Map<String, List<File>> mapping) {
		System.out.println(mapping.size());
		Set<String> keys = mapping.keySet();
		for(String key : keys){
			System.out.println(key);
			List<File> values = mapping.get(key);
			for(File f : values){
				System.out.println("\t" + f.getName());
			}
		}
	}

}
